package utils

import (
	"fmt"
	"os"
	"time"

	"github.com/sirupsen/logrus"
)

type FileWriter struct {
}

func (fw FileWriter) Levels() []logrus.Level {
	return logrus.AllLevels
}

// 创建目录和文件
func (fw FileWriter) Fire(entry *logrus.Entry) error {
	dirName := time.Now().Format("20060102")
	os.MkdirAll("./logs/"+dirName, os.ModePerm)
	level := entry.Level
	filePath := fmt.Sprintf("./logs/%s/%s.log", dirName, level)
	file, _ := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	line, _ := entry.String()
	file.Write([]byte(line))
	defer file.Close()
	return nil
}

// 每天下午15点删除7天前的日志记录文件夹
func RemoveLog() {
	TimeTask("0 12 8 * *", func() {
		dirName := time.Now().AddDate(0, 0, -7).Format("20060102")
		// 文件夹路径
		folderPath := "./logs/" + dirName

		// 使用Stat函数检查文件夹是否存在
		_, err := os.Stat(folderPath)
		if os.IsNotExist(err) {
			fmt.Println("日志文件夹不存在")
		} else {
			// 文件夹存在，尝试删除
			err = os.RemoveAll(folderPath)
			if err != nil {
				fmt.Println("删除日志文件夹时发生错误：", err)
			} else {
				fmt.Println("日志文件夹已成功删除")
			}
		}
	})
}
